// 用户相关的 HTTP 操作（单独放置，避免把所有逻辑挤在 auth.js）
import http from '@/https/http.js'
import { getUser, setUser } from '@/https/auth.js'

// 更新用户信息到后端并同步本地缓存
export const updateUser = async (payload) => {
  try {
    // 假定后端更新接口为 Mini/UpdateUser（可按需修改）
    const res = await http.post('MiniAut/UpdateUser', payload)
    // 兼容不同返回结构：res 可能直接是用户对象，也可能是{ data: user }
    const userData = res && res.data ? res.data : res
    if (userData && typeof userData === 'object') {
      setUser(userData)
    } else if (payload) {
      // 如果后端没有返回完整用户对象，合并本地缓存与传入字段并保存
      const local = getUser() || {}
      const merged = { ...local, ...payload }
      setUser(merged)
      return merged
    }
    return userData
  } catch (error) {
    console.error('更新用户信息失败:', error)
    throw error
  }
}

// 上传头像专用函数 - 使用文件上传方式
export const uploadAvatar = async (tempFilePath) => {
  return new Promise((resolve, reject) => {
    uni.uploadFile({
      url: http.baseUrl + 'MiniAut/UploadAvatar', // 后端接口地址
      filePath: tempFilePath, // 临时文件路径
      name: 'avatarFile', // 后端接收的参数名
      header: {
        // 如需身份验证，添加token
        'Authorization': 'Bearer ' + (uni.getStorageSync('token') || '')
      },
      success: (uploadRes) => {
        try {
          const result = JSON.parse(uploadRes.data).data;
		   
          if (result && result.avatarUrl) {
            // 如果返回的是相对路径，拼接baseUrl
            let finalAvatarUrl = result.avatarUrl;
            if (finalAvatarUrl.startsWith('/')) {
              finalAvatarUrl = finalAvatarUrl;
            }
            resolve(finalAvatarUrl);
          } else {
            reject(new Error('上传失败：' + (result.message || '服务器处理失败')));
          }
        } catch (e) {
          console.error('解析上传响应失败:', e);
          reject(new Error('上传失败：响应格式错误'));
        }
      },
      fail: (err) => {
        console.error('上传失败:', err);
        reject(new Error('上传失败：网络错误'));
      }
    });
  });
}

export default {
  updateUser,
  uploadAvatar
}
